<html>
<head>
<title>Release Notes &amp; Copyrights</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link type="text/css" rel="stylesheet" href="./style.css">
</head>

<body>
<p class="header">Robotics Toolbox for Matlab</p>
<h1>Release Notes &amp; Version History</h1>
<hr>

<h2>Robotics Toolbox version 9</h2>
<ul>
  <li><b>Changes:</b></li>
  <ul>
<li>The manual (robot.pdf) no longer contains a per function description.  All documentation is now in the m-file, making maintenance and consistency easier.</li>
<li>The Functions link from the Toolbox help browser lists all functions with hyperlinks to the indiviual help entries.</li>
<li>The <b>Robot</b> class is now named <b>SerialLink</b> to be more specific.  </li>
<li>Almost all functions that operate on a <b>SerialLink</b> object are now methods rather
than functions, for example <b>plot()</b> or <b>fkine()</b>.  In practice this makes little
difference to the user but operations can now be expressed as <b>robot.plot(q)</b> or
<b>plot(robot, q)</b>.  Toolbox documentation now prefers the former convention which is more 
aligned with object-oriented practice.
<li>The parametrers to the <b>Link</b> object constructor are now in the order: theta, d, a, alpha.  Why this order?  It's the order in which the link transform is created: RZ(theta) TZ(d) TX(a) RX(alpha).</li>
<li>All robot models now begin with the prefix <b>mdl_</b>, so <b>puma560</b> is now
<b>mdl_puma560</b>.
<li>The function <b>drivebot</b> is now the <b>SerialLink</b> method <b>teach</b>.</li>
<li>The function <b>ikine560</b> is now the <b>SerialLink</b> method <b>ikine6s</b> to indicate
that it works for any 6-axis robot with a spherical wrist.</li>
<li>The <b>link</b> class is now named <b>Link</b> to adhere to the convention that all classes begin with a capital letter.</li>
<li>The <b>quaternion</b> class is now named <b>Quaternion</b>
to adhere to the convention that all classes begin with a capital letter.</li>
<li>A number of utility functions have been moved into the a directory <b>common</b> since
they are not robot specific.</li>
<li><b>skew</b> no longer accepts a skew symmetric matrix as an argument and returns a 3-vector, this functionality is provided by the new function <b>vex</b>.</li>
<li><b>tr2diff</b> and <b>diff2tr</b> are now called <b>tr2delta</b> and <b>delta2tr</b></li>
<li><b>ctraj</b> with a scalar argument now spaces the points according to a trapezoidal
velocity profile (see <b>lspb</b>).  To obtain even spacing provide a uniformly spaced vector
as the third argument, eg. linspace(0, 1, N). </li>
  </ul>

  <li><b>New features:</b></li>
  <ul>
<li>Model of a mobile robot, <b>Vehicle</b>, that has the "bicycle" kinematic model (car-like). For given inputs it updates the robot state and returns noise corrupted odometry measurements.  This can be used in conjunction with a "driver" class such as <b>RandomPath</b> which drives the vehicle between random waypoints within a specified rectangular region.</li>
<li>Model of a laser scanner <b>RangeBearingSensor</b>, subclass of <b>Sensor</b>, that works in conjunction with 
a <b>Map</b> object to return range and bearing to invariant point features in the environment.</li>
<li>Extended Kalman filter <b>EKF</b> can be used to perform localization by dead reckoning or map featuers, map buildings and simultaneous localization and mapping.</li>
<li>Path planning classes: distance transform <b>DXform</b>, D* lattice planner <b>Dstar</b>,
probabilistic roadmap planner <b>PRM</b>, and rapidly exploring random tree <b>RRT</b>.</li>
<li>The RPY functions <b>tr2rpy</b> and <b>rpy2tr</b> assume that the roll, pitch, yaw
rotations are about the X, Y, Z axes which is consistent with 
common conventions for vehicles (planes, ships, ground vehicles).  For some applications (eg. cameras) it useful to consider the rotations about the Z, Y, Z axes, and this behaviour can be
obtained by using the option 'zyx' with these functions (note this is the pre release 8 behaviour).</li>
<li><b>jsingu</b></li>
<li><b>jsingu</b></li>
<li><b>lspb</b></li>
<li><b>tpoly</b></li>
<li><b>qplot</b></li>
<li><b>mtraj</b></li>
<li><b>mstraj</b></li>
<li><b>wtrans</b></li>
<li><b>se2</b></li>
<li><b>se3</b></li>
<li><b>trprint</b> compact display of a transform in various formats.</li>
<li><b>trplot</b></li>
<li><b>trplot2</b> as above but for SE(2)</li>
<li><b>tranimate</b></li>
<li><b>DHFactor</b> a simple means to generate the Denavit-Hartenberg kinematic model of a robot from a sequence of elementary transforms.</li>
<li>Monte Carlo estimator <b>ParticleFilter<b>.</li>
<li><b>vex</b> performs the inverse function to <b>skew</b>, it converts a skew-symmetric matrix to a 3-vector.</li>
<li><b>Pgraph</b> represents a non-directed embedded graph, supports plotting and minimum cost path finding.</li>
<li><b>Polygon</b> a generic 2D polygon class that supports plotting, intersectio/union/difference of polygons, line/polygon intersection, point/polygon containment.</li>
<li><b>plot_box</b> plot a box given TL/BR corners or center+WH, with options for edge color, fill color and transparency.</li>
<li><b>plot_circle</b> plot one or more circles, with options for edge color, fill color and transparency.</li>
<li><b>plot_sphere</b> plot a sphere, with options for edge color, fill color and transparency.</li>
<li><b>plot_ellipse</b> plot an ellipse, with options for edge color, fill color and transparency.</li>
<li><b>plot_ellipsoid</b> plot an ellipsoid, with options for edge color, fill color and transparency.</li>
<li><b>plot_poly</b> plot a polygon, with options for edge color, fill color and transparency. </li>
<li><b>about</b> one line summary of a matrix or class, compact version of whos </li>
<li><b>tb_optparse</b> general argument handler and options parser, used internally in many
functions.</li>
  </ul>

  <li><b>Bugfixes:</b></li>
  <ul>
    <li>Improved error messages in many functions</li>
    <li>Removed trailing commas from if and for statements</li>
  </ul>

  <li><b>Known bugs and limitations:</b></li>
  <ul>
  </ul>
  <li>April, 2011</li>
</ul>

<br>
To see which version of the Robotics Toolbox is currently installed, you can type
<pre class="codeinput">
    info = ver('robot')
</pre>
The result should look like this:
<pre class="codeoutput">
info = 

       Name: 'Robotics Toolbox'
    Version: '9.0'
    Release: ''
       Date: '01-Apr-2011'
</pre>

<h2>Version History</h2>

<h3>Robotics Toolbox version 8</h3>
<ul>
  <li><b>New Features:</b></li>
  <ul>
    <li>First toolbox version</li>
    <li>Functions features based on modules release-0.3.3 (October 7th, 2007)</li>
    <ul>
      <li><b>Files added:</b></li>
      <ul>
      </ul>
      <li><b>Files removed:</b></li>
      <ul>
      </ul>
      <li><b>Features added:</b></li>
      <ul>
      </ul>
      <li><b>Bugs fixed:</b></li>
      <ul>
      </ul>
    </ul>
  </ul>
  <li>October 7th, 2007</li>
</ul>

</body>
</html>
